surface: Make surface-type a property
authorMatthias Clasen <mclasen@redhat.com>
Wed, 22 May 2019 22:35:09 +0000 (22:35 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 May 2019 20:25:16 +0000 (20:25 +0000)
Make surface-type a construct-only property,
so we can set it before the frame clock.

gdk/broadway/gdksurface-broadway.c
gdk/gdksurface.c
gdk/wayland/gdksurface-wayland.c
gdk/x11/gdksurface-x11.c

index db46f56f87a06ab051b65cd4fcd202ebd4e71150..6c3af4c95aae87c6e366594055b041a57ad084fe 100644 (file)
@@ -209,13 +209,13 @@ _gdk_broadway_display_create_surface (GdkDisplay     *display,
   frame_clock = _gdk_frame_clock_idle_new ();
 
   surface = g_object_new (GDK_TYPE_BROADWAY_SURFACE,
+                          "surface-type", surface_type,
                           "display", display,
                           "frame-clock", frame_clock,
                           NULL);
 
   g_object_unref (frame_clock);
 
-  surface->surface_type = surface_type;
   surface->parent = parent;
   surface->x = x;
   surface->y = y;
index 94de885ef26b0526143bb83e5574630ebe43bfdc..281ac8b034461b93d071227895130e5d87276be7 100644 (file)
@@ -77,6 +77,7 @@ enum {
 
 enum {
   PROP_0,
+  PROP_SURFACE_TYPE,
   PROP_CURSOR,
   PROP_DISPLAY,
   PROP_PARENT,
@@ -473,6 +474,13 @@ gdk_surface_class_init (GdkSurfaceClass *klass)
                             FALSE,
                             G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
 
+  properties[PROP_SURFACE_TYPE] =
+      g_param_spec_enum ("surface-type",
+                          P_("Surface type"),
+                          P_("Surface type"),
+                          GDK_TYPE_SURFACE_TYPE, GDK_SURFACE_TOPLEVEL,
+                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+
   g_object_class_install_properties (object_class, LAST_PROP, properties);
 
   /**
@@ -659,6 +667,10 @@ gdk_surface_set_property (GObject      *object,
       surface->autohide = g_value_get_boolean (value);
       break;
 
+    case PROP_SURFACE_TYPE:
+      surface->surface_type = g_value_get_enum (value);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -703,6 +715,10 @@ gdk_surface_get_property (GObject    *object,
       g_value_set_boolean (value, surface->autohide);
       break;
 
+    case PROP_SURFACE_TYPE:
+      g_value_set_enum (value, surface->surface_type);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
index b3dafbaf4ff6bf6ed73392434fa37a9bb5be6b10..f7bd5c9f9db09909a26f030972039b557175b705 100644 (file)
@@ -516,6 +516,7 @@ _gdk_wayland_display_create_surface (GdkDisplay     *display,
     frame_clock = _gdk_frame_clock_idle_new ();
 
   surface = g_object_new (GDK_TYPE_WAYLAND_SURFACE,
+                          "surface-type", surface_type,
                           "display", display,
                           "parent", parent,
                           "frame-clock", frame_clock,
@@ -534,7 +535,6 @@ _gdk_wayland_display_create_surface (GdkDisplay     *display,
       height = 65535;
     }
 
-  surface->surface_type = surface_type;
   surface->x = x;
   surface->y = y;
   surface->width = width;
index 64a1d11ccad5cfccee9f01874467ad50b23c7e32..dc12f44f0aa5730169387c4a62de2129afbd3d5b 100644 (file)
@@ -820,13 +820,13 @@ _gdk_x11_display_create_surface (GdkDisplay     *display,
     frame_clock = _gdk_frame_clock_idle_new ();
 
   surface = g_object_new (GDK_TYPE_X11_SURFACE,
+                          "surface-type", surface_type,
                           "display", display,
                           "frame-clock", frame_clock,
                           NULL);
 
   g_object_unref (frame_clock);
 
-  surface->surface_type = surface_type;
   surface->parent = parent;
   surface->x = x;
   surface->y = y;